#ifndef _Simulator_h_
#define _Simulator_h_
#include <stdio.h>
#include "Definitions.h"
#include "Simulator.h"
#include "Outports.h"
#include "Inports.h"
#include "Controllers.h"
#include "Signals.h"
#include "Registers.h"
#include "Tracers.h"
#include "Displays.h"
#include "OutportDynamicList.h"

using namespace std;

class Simulator 
{
public:
    
    static Controller_ctrl_paddle* controller_ctrl_paddle;
    
    static Controller_test_paddle_ctrl* controller_test_paddle_ctrl;
    
    static OutPort_paddle_paddle_y* outPort_paddle_paddle_y;
    
    static OutPort_test_paddle_ball_incomming* outPort_test_paddle_ball_incomming;
    
    static OutPort_test_paddle_ball_y* outPort_test_paddle_ball_y;
    
    static Register_paddle_location_y* register_paddle_location_y;
    
    static Signal_paddle_new_location_y* signal_paddle_new_location_y;
    
    static Signal_paddle_distance_y* signal_paddle_distance_y;
    
    static Signal_paddle_abs_distance_y* signal_paddle_abs_distance_y;
    
    static Signal_paddle_sign_distance_y* signal_paddle_sign_distance_y;
    
    static Display_directiveexpression82* display_directiveexpression82;
    
    static Display_directiveexpression95* display_directiveexpression95;
    
    static Display_directiveexpression108* display_directiveexpression108;
    
    static Int32 Cycles;
    
    static Int32 CurrentCycle;
    
    static OutportDynamicList* OutportList;
    
    static OutportDynamicList* SortedOutportList;
    
    static void Initialize(void);
    
    static void Run(void);
    
    static void DfsVisit(IOutport** outport);
};

#endif // include guard
